package de.haw.ai3.bs.aufgabe3.a2.table;

import de.haw.ai3.bs.aufgabe3.a2.Agent;
import de.haw.ai3.bs.aufgabe3.a2.Smoker;
import de.haw.ai3.bs.aufgabe3.a2.Zutat;

/**
 * 
 * Oberklasse der Tische
 *
 */
public abstract class Table {

	public static final int CAPACITY = 2;

	protected Zutat zutat1;
	protected Zutat zutat2;

	/**
	 * Gibt an, ob der Smoker zu den auf dem Tisch liegenden Materialien passt
	 * @param smoker
	 * @return
	 */
	protected boolean doesntMatch(Smoker smoker) {
		return smoker.mirFehlen(zutat1, zutat2);
	}

	/**'
	 * Gibt an, ob der Tisch leer ist
	 * @return
	 */
	protected boolean isEmpty() {
		return (zutat1 == null && zutat2 == null);
	}

	/**
	 * Gibt an, ob der Tisch voll ist
	 * @return
	 */
	protected boolean isFull() {
		return (zutat1 != null && zutat2 != null);
	}

	/**
	 * 
	 * @param smoker
	 * @return
	 * @throws InterruptedException
	 */
	public abstract Zutat[] nehmen(Smoker smoker) throws InterruptedException;

	/**
	 * 
	 * @param zutaten
	 * @param agent
	 * @throws InterruptedException
	 */
	public abstract void platzieren(Zutat[] zutaten, Agent agent)
			throws InterruptedException;

}
